package util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.xml.sax.HandlerBase;

public class IoUtil
{
	/*写文件*/
	public void writeFile(File targetFile ,String content)
	{
		BufferedWriter bw = null;
		 try
		{
			 /*把管子连接到文件上并且 加粗管子*/
			bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(targetFile), "utf-8"));
			/*有一个数组 来存储内容*/
			String [] lines = content.split("\r\n");
			for (int i = 0; i < lines.length; i++)
			{
				String line = lines[i];
				/*写字符串*/
				bw.write(line);
				/*一次读取一行*/
				bw.newLine();
			}
			/*控水管*/
			bw.flush();
		}catch (IOException e)
		{
			e.printStackTrace();
		}finally
		{
			try
			{
				if(bw !=null)
				{
					bw.close();
					bw = null;
				}
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	/*读取文件
	 * 把读取的文件放到一个容器中去 
	 * 返回值是一个容器*/
	public List<String> readFile(File targetFile)
	{
		/*把目标文件中的内容放到这个容器中*/
		List<String> readsFile = new ArrayList<String>();
		BufferedReader br = null ;
		try
		{
			/*把管子连接到文件上  并加粗管子*/
			br = new BufferedReader(new InputStreamReader(new FileInputStream(targetFile), "utf-8"));
			/*存储读取的内容*/
			String line = "";
			while((line = br.readLine())!=null)
			{
				readsFile.add(line);
				System.out.println("=="+line);
			}
		}catch (IOException e)
		{
			e.printStackTrace();
		}finally
		{
			try
			{
				if(br != null)
				{
					br.close();
					br = null ;
				}
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return readsFile ;
	}
	/*写加密文件*/
	public void writeObjectFile(File targetFile ,Object obj)
	{
		/*加密文件的写法*/
		ObjectOutputStream os = null ;
		try
		{
			os = new ObjectOutputStream(new FileOutputStream(targetFile));
			/*填写对象*/
			os.writeObject(obj);
			/*控水管*/
			os.flush();
		} catch (IOException e)
		{
			e.printStackTrace();
		}finally
		{
			try
			{
				if(os != null)
				{
					os.close();
					os = null ;
				}
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	/*读文件*/
	public Object readObjectFile(File targetFile)
	{
		/*防止此文件不存在要添加一个文件*/
		if(!targetFile.getParentFile().exists())
		{
			/*调用文件 的多级目录*/
			targetFile.getParentFile().mkdirs();
		}
		
		Object obj = null ;
		/*连接加密管道*/
		ObjectInputStream oi = null ;
		try
		{
			/*当文件夹存在的时候要在此处创建一个文件夹*/
			targetFile.createNewFile();
			
			oi = new ObjectInputStream(new FileInputStream(targetFile));
			obj = oi.readObject();
		} catch (Exception e)
		{
			/*已知错误 不做任何处理*/
			//e.printStackTrace();
		}finally
		{
			try
			{
				if(oi != null)
				{
					oi.close();
					oi = null ;
				}
			} catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		return obj ;
	}
	public static void main(String[] args)
	{
		System.out.println("==");
		IoUtil  ioUtil = new IoUtil();
		/*设置文件路径*/
		String route = "k:/a_namelist.txt";
		File targetFile = new File(route);
		String content = "一年级";
		//ioUtil.writeFile(targetFile,content);
		ioUtil.readFile(targetFile);
		/*设置文件的路径*/
		String rout = "K:\\namelist.txt";
		targetFile = new File(rout);
		ioUtil.readObjectFile(targetFile);
		ioUtil.writeObjectFile(targetFile, content);
	}
}
